In [48]:
%load_ext autoreload
%autoreload 2
The autoreload extension is already loaded. To reload it, use: %reload_ext autoreload
In [ ]:
import pandas as pd
import os
import numpy as np
from pyTsetlinMachine.tm import MultiClassTsetlinMachine
from time import time
from PIL import Image
from sklearn.model_selection import train_test_split
In [50]:
from tzetlin import (filename_to_bin_img_array, get_img_array, filter_uneven_shapes,
load_lesion_df, get_all_imgs_filenames_from_dir_list, filter_non_lesion_entries,
get_lesion_filenames_list,
split_lesions_present_absent,
find_duplicates)
Dataset¶
In [51]:
PRUNED_DATASET_DIR = "data/Dataset-pruned"
PRUNED_IMGS_DIR = PRUNED_DATASET_DIR + "/base_images"
In [75]:
df = load_lesion_df()
print("Original df shape:", df.shape)
lesions_present_df, lesions_absent_df = split_lesions_present_absent(df)
lesion_filenames = get_lesion_filenames_list(df)
print("Num. of lesion files:", len(lesion_filenames))
lesions_present_df_filenames = get_lesion_filenames_list(lesions_present_df)
print("Num. of lesion files with lesion present (entry present in the csv):",
len(lesions_present_df_filenames))
lesions_absent_df_filenames = get_lesion_filenames_list(lesions_absent_df)
print("Num. of lesion files with lesion absent (entry absent in the csv):",
len(lesions_absent_df_filenames))
all_filenames = get_all_imgs_filenames_from_dir_list(PRUNED_IMGS_DIR)
print("Num. of all image files:", len(all_filenames))
Original df shape: (1149, 31) Num. of lesion files: 1149 Num. of lesion files with lesion present (entry present in the csv): 620 Num. of lesion files with lesion absent (entry absent in the csv): 529 Num. of all image files: 931
In [76]:
dir_lesions_present = []
dir_lesions_absent = []
other = []
for f in all_filenames:
if f in lesions_present_df_filenames:
dir_lesions_present.append(f)
elif f in lesions_absent_df_filenames:
dir_lesions_absent.append(f)
else:
other.append(f)
print("Images present in the image folder, absent in the csv:", len(other))
dir_lesions_absent += other
Images present in the image folder, absent in the csv: 57
In [78]:
all_imgs = dir_lesions_present + dir_lesions_absent
len(all_imgs)
Y_train = [1]*len(dir_lesions_present) + [0]*len(dir_lesions_absent)
assert len(all_imgs) == len(Y_train)
In [80]:
# Separate image IDs and frame numbers
imgs_frames = []
for f in all_imgs:
base = f.replace('.png','')
img_id, frame = base.split('_')
imgs_frames.append((img_id, frame))
len(imgs_frames)
Out[80]:
931
In [81]:
img_size = (256, 256)
lesion_masks = []
for img_id, frame in imgs_frames:
frame = int(frame)
row = df[(df['image_id'] == img_id) & (df['frame'] == frame)]
if row.empty:
print(f"WARNING: No entry in df for {img_id}, frame {frame}")
lesion_masks.append(np.zeros(img_size, dtype=np.uint8))
continue
elif pd.isna(row.iloc[0]['lesion_id']):
print(f"WARNING: No lesion for {img_id}, frame {frame}")
lesion_masks.append(np.zeros(img_size, dtype=np.uint8))
continue
lesion_x = int(row.iloc[0]['lesion_x'])
lesion_y = int(row.iloc[0]['lesion_y'])
lesion_width = int(row.iloc[0]['lesion_width'])
lesion_height = int(row.iloc[0]['lesion_height'])
lesion_mask = np.zeros(img_size, dtype=np.uint8)
lesion_mask[lesion_y:lesion_y+lesion_height, lesion_x:lesion_x+lesion_width] = 1
lesion_masks.append(lesion_mask)
lesion_masks = np.array(lesion_masks)
len(lesion_masks)
WARNING: No lesion for 131aedfhs6pnf1fvtvp49mk5yshtbwpz22, frame 26 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mlbfw4nnotz22, frame 43 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mldx9653nxv22, frame 45 WARNING: No lesion for 13c2ur5452xb62wphbkenx73hk0ymr4i, frame 13 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mff2pm7g60u22, frame 48 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mjbhcpprubf22, frame 23 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mg8hvxr9qia22, frame 35 WARNING: No lesion for 131aedfhs6pnf1fvtvp498txzzhkoum022, frame 32 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mj6h8sfw4ib22, frame 26 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jyuzi3sqhl722, frame 19 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mlemi2tt9w022, frame 31 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mjg1jqfql5v22, frame 45 WARNING: No lesion for 13c2ur5452xb62wphbkenx73hk0ymqz1, frame 16 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mh7wxkodv0522, frame 18 WARNING: No lesion for 13c2ur5452xb62wphbkenx73hk0ymqyb, frame 20 WARNING: No lesion for 13c2ur5452xb62wphbkenx73hk0ympsn, frame 13 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jxugicd59td22, frame 27 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mn36pu6ixl022, frame 41 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mja0r0nq6pn22, frame 23 WARNING: No lesion for 13c2ur5452xb62wphbkenx73hk0ymqpx, frame 15 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jyunm3zopt122, frame 47 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jyunly5k13i22, frame 22 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jwoajvsvw6722, frame 29 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mj8lu0x093r22, frame 22 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jstof8iams322, frame 37 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mfftaafvcid22, frame 32 WARNING: No lesion for 13c2ur5452xb62wphbkenx73hk0ymqyl, frame 19 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mff2pscinfi22, frame 30 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mgcf94tilmx22, frame 25 WARNING: No lesion for 131aedfhs6pnf1fvtvp498wvamuwb6pq22, frame 32 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mff2plx3rdw22, frame 24 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mjf02qnmxg322, frame 45 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mff2pqyfwic22, frame 30 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mg85r9wupiz22, frame 45 WARNING: No lesion for 13c2ur5452xb62wphbkenx73hk0yms9t, frame 16 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mja0v3gmqv522, frame 32 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jxugi6lddkk22, frame 23 WARNING: No lesion for 13c2ur5452xb62wphbkenx73hk0ympsn, frame 9 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mlbfxd5hfoe22, frame 44 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jstof7d61up22, frame 42 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jyun5oup62e22, frame 26 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jyunm5i678h22, frame 39 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jxvwad3c0hk22, frame 45 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jxvwad3c0hk22, frame 35 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mj8zch7sk5v22, frame 66 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mn3wvhzxdm722, frame 28 WARNING: No lesion for 13c2ur5452xb62wphb95qjhuf4zvtavy, frame 13 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jxtehkqvd1322, frame 14 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzp4tyevfwq22, frame 28 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mj6h8nyxra322, frame 34 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzlwxdyfl2s22, frame 24 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzlwxgjix8e22, frame 28 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mjg1jh9qgql22, frame 57 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mhdb2j3l3v922, frame 26 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzo1ixaz40322, frame 29 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzm9mir1i2k22, frame 34 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mmcyxhzkgtm22, frame 56 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mif6sem5a5q22, frame 23 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzp4tx05lyu22, frame 27 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzo1ixaz40322, frame 30 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mlemicfx5gd22, frame 39 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mkf4w4v61w822, frame 40 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mja0v3tgkmz22, frame 30 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mlbqwqy6eyr22, frame 45 WARNING: No lesion for 13c2ur5452xb62wphbkf05kp5ghevfbi, frame 27 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzm9mp9mycl22, frame 21 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jyunm3zopt122, frame 43 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mfftacenleb22, frame 37 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mh7wxj2igom22, frame 23 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mifk24t0sju22, frame 56 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jxtehkidxnp22, frame 22 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jxuh5182f0x22, frame 30 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mjbhcpx93zp22, frame 26 WARNING: No lesion for 13c2ur549vohc0jat2dvu3xs2y1, frame 24 WARNING: No lesion for 13c2ur5452xb62wphbkenx73hk0ympt5, frame 15 WARNING: No lesion for 13c2ur549vohc0jat2wd23mle1, frame 19 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mg85r52ygov22, frame 41 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mg8hvypp6vo22, frame 21 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mgcf93bdtro22, frame 23 WARNING: No lesion for 13c2ur5452xb62wphbkenx73hk0ymrta, frame 12 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mmbjw5xonlu22, frame 19 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jxos8elm1i422, frame 46 WARNING: No lesion for 131aedfht3wfgufvmycqza9v0ua859y, frame 30 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jxugi5ifhz522, frame 22 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzp4tyvevv822, frame 33 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzlwx9z9i0122, frame 21 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jyun5nw81ic22, frame 25 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jyun5djppw522, frame 41 WARNING: No lesion for 13c2ur5452xb62wphb959tewknprp1cp, frame 26 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mlemi7dcg5y22, frame 36 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mmcyy2a2clg22, frame 44 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mff2pqyfwic22, frame 23 WARNING: No lesion for 13c2ur5452xb62wphbkenx73hk0ymqqc, frame 25 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mfftab118r422, frame 43 WARNING: No lesion for 13c2ur5452xb62wphb959tewknprp1ae, frame 31 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mmcyy2a2clg22, frame 46 WARNING: No lesion for 13c2ur5452xb62wphbkenx73hk0ymqp5, frame 17 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mg8hvyy093222, frame 31 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mg8hvyy093222, frame 19 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzp4u1zkeyg22, frame 18 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mfftamgqtxl22, frame 32 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mg85rd0fgxd22, frame 32 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mja0qp0rrvk22, frame 43 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzlwxa84nyz22, frame 40 WARNING: No lesion for 13c2ur5452xb62wphbkenx73hk0ympt5, frame 18 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzo1j13hed322, frame 45 WARNING: No lesion for 13c2ur5452xb62wphb959tewknprp1ar, frame 35 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mma5mcchbpq22, frame 31 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jyun5fl4qte22, frame 27 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mn4mfl8nw8t22, frame 26 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mjbhcpprubf22, frame 14 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jyunlwh5jgi22, frame 36 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jsyaftal60122, frame 30 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mh7xylqex4u22, frame 36 WARNING: No lesion for 13c2ur5452xb62wphbkenx73hk0ymrsc, frame 18 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mff2pm7g60u22, frame 53 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzq6gxwoxtj22, frame 34 WARNING: No lesion for 13c2ur5452xb62wphb959tewknprozmh, frame 15 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mj8lu0x093r22, frame 21 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mmbjw684qyk22, frame 29 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mg85rd8likr22, frame 33 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jxuh510g5kf22, frame 50 WARNING: No lesion for 131aedfhs6pnf1fvtvp49ml753rly5oi22, frame 32 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mjbu372vfte22, frame 31 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jxvwabpeyta22, frame 52 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzll72bstib22, frame 21 WARNING: No lesion for 13c2ur5452xb62wphbkenx73hk0ymr4e, frame 12 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jxuh510g5kf22, frame 53 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mjg1jsf0kxr22, frame 38 WARNING: No lesion for 13c2ur549vohc0jat2ewk4eyu41, frame 30 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jwozv2hftsy22, frame 17 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mm91xnvc1ew22, frame 36 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jxugibikgyd22, frame 22 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mjg1jfpnd8i22, frame 51 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mg85r6e9f0r22, frame 37 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mn4mfg8bkgy22, frame 33 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jstof7d61up22, frame 44 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mlemi7dcg5y22, frame 37 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mmcyxgv5o4w22, frame 60 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jxvwadsc7wa22, frame 42 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzlkzt1ah0u22, frame 28 WARNING: No lesion for 131aedfhs6pnf1fvtvp498txzzigu9a222, frame 35 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mm91xnvc1ew22, frame 44 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mlbqwr3hn8622, frame 29 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mjf02qnmxg322, frame 44 WARNING: No lesion for 13c2ur5452xb62wphbkenx73hk0yms9q, frame 14 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mma5mcchbpq22, frame 32 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzlwxgjix8e22, frame 22 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mffrymilfct22, frame 22 WARNING: No lesion for 131aedfhs6pnf1fvtvp496aiqkfrl56u22, frame 17 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mn3wvh2dr2t22, frame 46 WARNING: No lesion for 13c2ur5452xb62wphbkenx73hk0yms98, frame 34 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mja0v3gmqv522, frame 33 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mg85r5ebddd22, frame 40 WARNING: No lesion for 13c2ur5452xb62wphbkenx73hk0ymrrz, frame 16 WARNING: No lesion for 13c2ur5452xb62wphbkf05kp5ghevfbs, frame 38 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzo1ivy9xsv22, frame 34 WARNING: No lesion for 13c2ur5452xb62wphb959tewknprp35u, frame 27 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mfftaiyqmom22, frame 23 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mlemi1a2kdg22, frame 35 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mma5masf8h622, frame 28 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzp4u1zkeyg22, frame 19 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mjbhclnkxsy22, frame 27 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mk5l3gmfzrq22, frame 14 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mlbfw3zb94s22, frame 40 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mg8hvxr9qia22, frame 21 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mjg1jsf0kxr22, frame 41 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jvp6iigk1jz22, frame 20 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mj8zcnu19qs22, frame 52 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jyun5cbcxbn22, frame 31 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mn36pt88u4222, frame 39 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzmz3gh22k922, frame 23 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mkf4w4v61w822, frame 43 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mj8ltu8asax22, frame 47 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jxvwajp7b1s22, frame 29 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mmbjw684qyk22, frame 38 WARNING: No lesion for 13c2ur5452xb62wphb95qjhuf4zvtawg, frame 18 WARNING: No lesion for 13c2ur5452xb62wphb959tewknprozqy, frame 19 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzp4tx05lyu22, frame 26 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mg8hvsxehxq22, frame 18 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mja0uwu6c9z22, frame 33 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jvp6ioxox2z22, frame 20 WARNING: No lesion for 13c2ur549vohc0jat2wd23mh11, frame 22 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mjbu35x8sfc22, frame 34 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mifk24t0sju22, frame 46 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mh7xylqex4u22, frame 34 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mmbjw5xonlu22, frame 32 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jstofgo1r9j22, frame 30 WARNING: No lesion for 13c2ur5452xb62wphb95qjhuf4zvtawj, frame 27 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzlkzxsx0i622, frame 23 WARNING: No lesion for 13c2ur5452xb62wphbkf05kp5ghevfc0, frame 30 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mjf02rqxjdh22, frame 46 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mia86yesh2i22, frame 39 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jxuh5182f0x22, frame 26 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jyun5nw81ic22, frame 20 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mj8ltureo6z22, frame 40 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mjg1jqfql5v22, frame 47 WARNING: No lesion for 131aedfhs6pnf1fvtvp498txzz7lihjn22, frame 31 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mj6h8mfifhj22, frame 35 WARNING: No lesion for 13c2ur5452xb62wphbkenx73hk0ymput, frame 20 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mjbu372vfte22, frame 27 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mgcf8tja9jk22, frame 26 WARNING: No lesion for 13c2ur549vohc0jat2ewk4eyq81, frame 25 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mm91xpwfnuf22, frame 47 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jyunjzs396d22, frame 39 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzm9mkpndsm22, frame 37 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mm91xpavpff22, frame 33 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mlemi2tt9w022, frame 19 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mj8zcfyonih22, frame 70 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jstofh3o1jt22, frame 45 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jwozv8pzxl522, frame 23 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mj6h8ni59pd22, frame 29 WARNING: No lesion for 131aedfhs6pnf1fvtvp49ml751ln830822, frame 28 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mlbqwy0o6a022, frame 34 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzq6ghl7gmp22, frame 32 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzo1ixna6md22, frame 27 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mn4mfg8bkgy22, frame 32 WARNING: No lesion for 131aedfhs6pnf1fvtvp498txzz8nvxst22, frame 39 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzp4u385l8422, frame 21 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mj6h8sfw4ib22, frame 28 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzm9mpjal0f22, frame 24 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jxvwaiqn5p222, frame 26 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mffta9cl2xf22, frame 42 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzp4twiypve22, frame 41 WARNING: No lesion for 13c2ur549vohc0jat2dvu3xrxb1, frame 27 WARNING: No lesion for 13c2ur5452xb62wphb959tewknprozmk, frame 16 WARNING: No lesion for 131aedfhs6pnf1fvtvp49ml751ln830822, frame 35 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mfffzhepxmw22, frame 44 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jxvwaa9o9po22, frame 34 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mg85r6e9f0r22, frame 24 WARNING: No lesion for 131aedfhs6pnf1fvtvp498wvamq38ov722, frame 37 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jstof8iams322, frame 36 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mk5xd50agyi22, frame 32 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mifkfi963mz22, frame 48 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mj6h8u6byky22, frame 43 WARNING: No lesion for 131aedfhs6pnf1fvtvp49joxclh8ywl822, frame 35 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mk5xdeso0r722, frame 62 WARNING: No lesion for 13c2ur5452xb62wphbkenx73hk0ympue, frame 16 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mj8ltureo6z22, frame 41 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mjg1jfpnd8i22, frame 41 WARNING: No lesion for 13c2ur5452xb62wphbkenx73hk0ympsr, frame 12 WARNING: No lesion for 13c2ur5452xb62wphbkenx73hk0ympux, frame 19 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzlwxaqosfz22, frame 31 WARNING: No lesion for 13c2ur549vohc0jat2ewk4eyyh1, frame 30 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mk5xd50agyi22, frame 29 WARNING: No lesion for 13c2ur5452xb62wphb959tewknprozrg, frame 20 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzq6gw72kpe22, frame 41 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzmz3h7d5gz22, frame 31 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mn36pt88u4222, frame 41 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mj7wco3t3lb22, frame 40 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mja0qq7hmj722, frame 30 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mj6h8lyvn5p22, frame 37 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mlemhzjwfu922, frame 39 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jstofa1lya722, frame 23 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mfftaiyqmom22, frame 18 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jyuzi2y2nxl22, frame 31 WARNING: No lesion for 13c2ur5452xb62wphbf4x120pzcs2gsx, frame 18 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mj6h8ni59pd22, frame 38 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mjbu3dgtr4822, frame 31 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mif6sfpum6h22, frame 41 WARNING: No lesion for 13c2ur5452xb62wphb95qjhuf4zvtaxa, frame 18 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mk5xdeso0r722, frame 57 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mj8zch7sk5v22, frame 59 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mk5xd63iqs422, frame 29 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mn4mfhjftac22, frame 39 WARNING: No lesion for 13c2ur5452xb62wphbkenx73hk0yms9b, frame 22 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jyunly5k13i22, frame 31 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mmcakgxr8i422, frame 64 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jxos8ewokq622, frame 37 WARNING: No lesion for 131aedfhs6pnf1fvtvp49ee0ulyq7shj22, frame 40 WARNING: No lesion for 13c2ur549vohc0jat2dvu3xs0c1, frame 20 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jxuh4xk0k4l22, frame 24 WARNING: No lesion for 13c2ur5452xb62wphbkf05kp5ghevgpg, frame 14 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mi8hmk4m5rt22, frame 21 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mg85rd8likr22, frame 32 WARNING: No lesion for 13c2ur549vohc0jat2ewj4eynm1, frame 28 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzp4tyevfwq22, frame 26 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jto5dqkensc22, frame 27 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzmz3id86k722, frame 21 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jvrnoxyphgh22, frame 27 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mm91xuuuo8z22, frame 65 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jyunlvc0am022, frame 36 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jyunm5i678h22, frame 50 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jyun5fl4qte22, frame 36 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mifk27kmvbi22, frame 74 WARNING: No lesion for 13c2ur5452xb62wphb959tewknprozrz, frame 20 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mja0qp0rrvk22, frame 40 WARNING: No lesion for 13c2ur5452xb62wphbkenx73hk0ympv4, frame 12 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jxvwaiqn5p222, frame 37 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mh7xyjrayy322, frame 20 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzm9mj1hxrr22, frame 31 WARNING: No lesion for 13c2ur5452xb62wphbkf05kp5ghevgor, frame 17 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mmcakqp1db822, frame 59 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jxuh4xk0k4l22, frame 26 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jxuh4utq1jr22, frame 25 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzq6gxjgdyd22, frame 34 WARNING: No lesion for 13c2ur5452xb62wphb959tewknprozs5, frame 21 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzo1j0mu9ot22, frame 35 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mk5ysh92uks22, frame 44 WARNING: No lesion for 13c2ur549vohc0jat2dvu3xs9w1, frame 23 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mg85r7273uv22, frame 27 WARNING: No lesion for 13c2ur5452xb62wphbkenx73hk0ymqyp, frame 31 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mj7wcnu8hq522, frame 40 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzlwxa84nyz22, frame 27 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mff2pvjze6k22, frame 39 WARNING: No lesion for 13c2ur549vohc0jat2ewj4eyk51, frame 31 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mmcyy417nbz22, frame 37 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mmcakgxr8i422, frame 62 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mma5masf8h622, frame 24 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzlkzu19ixt22, frame 38 WARNING: No lesion for 13c2ur5452xb62wphbkenx73hk0ymrte, frame 5 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mk5xdef7rvs22, frame 46 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mja0v4y3q9222, frame 44 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mkf4w48gx8522, frame 33 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mn36pu6ixl022, frame 38 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mff2pw4q7zi22, frame 21 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mifk27kmvbi22, frame 72 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mg85rd0fgxd22, frame 29 WARNING: No lesion for 131aedfht3wfgufvmycqzlkz0rcviu2, frame 19 WARNING: No lesion for 13c2ur5452xb62wphbkenx73hk0ymtrw, frame 17 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mifkfjxwbcf22, frame 48 WARNING: No lesion for 13c2ur5452xb62wphbkenx73hk0ymr4u, frame 14 WARNING: No lesion for 13c2ur5452xb62wphbkenx73hk0ymqpt, frame 19 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mifkfjxwbcf22, frame 42 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jyunjzs396d22, frame 37 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mj6h8u6byky22, frame 54 WARNING: No lesion for 13c2ur5452xb62wphb95qjhuf4zvtavy, frame 16 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mk5l3drsevd22, frame 22 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mja0uxcn4dl22, frame 32 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jxvwadsc7wa22, frame 20 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mfftacenleb22, frame 40 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mja0qnjagwy22, frame 23 WARNING: No lesion for 13c2ur5452xb62wphbkenx73hk0ymqz4, frame 17 WARNING: No lesion for 131aedfhs6pnf1fvtvp49eatmx0ax1um22, frame 22 WARNING: No lesion for 13c2ur549vohc0jat2dvt3xrqt1, frame 34 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mk5xd7zgtfe22, frame 35 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mn4mfqd3ksy22, frame 26 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mffryo1zqvt22, frame 46 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzlwxaqosfz22, frame 20 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jxos8ewokq622, frame 28 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jyuzi2y2nxl22, frame 24 WARNING: No lesion for 13c2ur549vohc0jat2wqi9spx2, frame 19 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mn4mfqd3ksy22, frame 28 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jyuzi97x0uh22, frame 33 WARNING: No lesion for 13c2ur5452xb62wphb959tewknprozle, frame 16 WARNING: No lesion for 131aedfhs6pnf1fvtvp49ee0ulxyp5od22, frame 37 WARNING: No lesion for 13c2ur549vohc0jat2wd23mj71, frame 18 WARNING: No lesion for 13c2ur5452xb62wphbkenx73hk0ymr4x, frame 14 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mj6h8mfifhj22, frame 34 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mj7wcnu8hq522, frame 29 WARNING: No lesion for 131aedfht3wfgufvmycqza9v0ua859y, frame 32 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mmcakfghmju22, frame 77 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jvp6idx06l122, frame 22 WARNING: No lesion for 13c2ur5452xb62wphb95qjhuf4zvtax7, frame 14 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzo1j0mu9ot22, frame 23 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mn4mfl8nw8t22, frame 35 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mja0uwu6c9z22, frame 35 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzp4tyvevv822, frame 42 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzq6ghl7gmp22, frame 30 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mg8hvypp6vo22, frame 33 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mj8ltt2msat22, frame 52 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mn4mfrgd6gt22, frame 28 WARNING: No lesion for 13c2ur5452xb62wphb959tewknprp36b, frame 27 WARNING: No lesion for 131aedfht3wfgufvmycqza9v2mkttpy, frame 22 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jstofh3o1jt22, frame 37 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jstofgo1r9j22, frame 29 WARNING: No lesion for 13c2ur5452xb62wphb959tewknprp35c, frame 38 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mld7mqexnz322, frame 36 WARNING: No lesion for 13c2ur5452xb62wphb959tewknprp36e, frame 30 WARNING: No lesion for 131aedfhs6pnf1fvtvp49ml751m1ft2q22, frame 59 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mmcyxhzkgtm22, frame 57 WARNING: No lesion for 13c2ur549vohc0jat2dvt3xrmw2, frame 26 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzm9mp9mycl22, frame 20 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzm9mir1i2k22, frame 37 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzlwxai4omd22, frame 27 WARNING: No lesion for 13c2ur549vohc0jat2wqi9szw1, frame 21 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mjg1jdq50j822, frame 65 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mlemicfx5gd22, frame 37 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzm9mj1hxrr22, frame 29 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mj8ltu8asax22, frame 46 WARNING: No lesion for 13c2ur549vohc0jat2ewj4eycc2, frame 48 WARNING: No lesion for 131aedfhs6pnf1fvtvp498txzzigu9a222, frame 47 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mja0v4y3q9222, frame 34 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mj8ltt2msat22, frame 41 WARNING: No lesion for 131aedfhs6pnf1fvtvp498txzz8nvxst22, frame 23 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mjbhcpx93zp22, frame 34 WARNING: No lesion for 13c2ur5452xb62wphbkenx73hk0ympth, frame 16 WARNING: No lesion for 131aedfht3wfgufvmycqza9v2mkttpy, frame 30 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mj8zcnu19qs22, frame 58 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mmcakfghmju22, frame 67 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzlwx91itlr22, frame 38 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mj6h8nyxra322, frame 32 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzm9mkf6a6b22, frame 29 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzq6ggz3f7z22, frame 25 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mmcyxgv5o4w22, frame 57 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jxvwaa9o9po22, frame 48 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jxugibxcypj22, frame 24 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mlemi1a2kdg22, frame 34 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mj8zcfyonih22, frame 53 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzmz3gh22k922, frame 22 WARNING: No lesion for 131aedfhs6pnf1fvtvp498wvamtxxej022, frame 27 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzq6gxjgdyd22, frame 44 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mhdb2k0lbbz22, frame 22 WARNING: No lesion for 131aedfhs6pnf1fvtvp49ml751k6d75922, frame 39 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jxos8elm1i422, frame 33 WARNING: No lesion for 13c2ur5452xb62wphb959tewknprozrw, frame 18 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mmcyybnlub422, frame 40 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mk5xdef7rvs22, frame 37 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mjbu3cbit0u22, frame 30 WARNING: No lesion for 13c2ur5452xb62wphbkenx73hk0ymqpk, frame 13 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mk5l3drsevd22, frame 20 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mg85r9mnbg122, frame 38 WARNING: No lesion for 131aedfhs6pnf1fvtvp49joxclh8ywl822, frame 29 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mfftamgqtxl22, frame 31 WARNING: No lesion for 13c2ur5452xb62wphb959tewknprp19c, frame 30 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mlbqwraet4w22, frame 25 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mm91xpavpff22, frame 38 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mmcake31aq822, frame 48 WARNING: No lesion for 13c2ur549vohc0jat2wd23m5b2, frame 21 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mj6h8lyvn5p22, frame 36 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mff2pt62abt22, frame 28 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzq6gw72kpe22, frame 33 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jxuh4rk3a5m22, frame 36 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jvrnowrejjj22, frame 23 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzlwx91itlr22, frame 25 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jyrt5zq707n22, frame 30 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mn3wvhzxdm722, frame 27 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzp4twiypve22, frame 49 WARNING: No lesion for 131aedfht3wfgufvmycqzlkz1chix90, frame 30 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jvrnoweeclp22, frame 20 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jyun5djppw522, frame 25 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mjbu37nra6d22, frame 29 WARNING: No lesion for 13c2ur5452xb62wphb959tewknprp354, frame 25 WARNING: No lesion for 131aedfhs6pnf1fvtvp49joxclh2wk8y22, frame 23 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzlwxfggo8922, frame 29 WARNING: No lesion for 13c2ur5452xb62wphbkenx73hk0ympty, frame 17 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzll741nkbo22, frame 20 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jyun5cbcxbn22, frame 35 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mff2pt62abt22, frame 33 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mh7wxl19pb322, frame 18 WARNING: No lesion for 13c2ur549vohc0jat2dvu3xs7q1, frame 18 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzm9mpjal0f22, frame 38 WARNING: No lesion for 13c2ur5452xb62wphbkenx73hk0yms9w, frame 16 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jyuzi97x0uh22, frame 31 WARNING: No lesion for 131aedfhs6pnf1fvtvp49juwu7naydgi22, frame 33 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mja0uvgw21o22, frame 27 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mjbu35x8sfc22, frame 32 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jvp6idi20cr22, frame 26 WARNING: No lesion for 13c2ur5452xb62wphbkenx73hk0ympth, frame 14 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mffrym7xykj22, frame 28 WARNING: No lesion for 13c2ur5452xb62wphb959tewknprozlm, frame 9 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jxuh4vuvar522, frame 31 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mffta9cl2xf22, frame 41 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mlemhzjwfu922, frame 32 WARNING: No lesion for 13c2ur5452xb62wphbkenx73hk0yms8x, frame 29 WARNING: No lesion for 13c2ur5452xb62wphbkenx73hk0ymtrr, frame 14 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jxvwajp7b1s22, frame 25 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mfftaafvcid22, frame 31 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzmz3i3w9yt22, frame 21 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mlbfxd5hfoe22, frame 41 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mja0qq7hmj722, frame 28 WARNING: No lesion for 131aedfhs6pnf1fvtvp49ml751jvo26b22, frame 42 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzm9mkpndsm22, frame 24 WARNING: No lesion for 13c2ur549vohc0jat2dvu3xsdd1, frame 26 WARNING: No lesion for 131aedfhs6pnf1fvtvp49ml753rly5oi22, frame 35 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jxugi6lddkk22, frame 31 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jyrt5zfj7up22, frame 19 WARNING: No lesion for 13c2ur5452xb62wphbkf05kp5ghevfax, frame 23 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jvrnoxyphgh22, frame 22 WARNING: No lesion for 131aedfhs6pnf1fvtvp49ml753rwly1i22, frame 33 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mifkdbq7bxu22, frame 65 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mk5xd7zgtfe22, frame 31 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jwoajutzp6d22, frame 26 WARNING: No lesion for 13c2ur549vohc0jat2wqi9syl1, frame 11 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzll7563ouo22, frame 20 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jzo1j13hed322, frame 30 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mff2pw4q7zi22, frame 30 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jyunlvc0am022, frame 34 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mmcakhn9j5a22, frame 65 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mldx978xclh22, frame 51 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mi8hmlp9c9p22, frame 29 WARNING: No lesion for 131aedfhs6pnf1fvtvp49jxugi5ifhz522, frame 32 WARNING: No lesion for 131aedfhs6pnf1fvtvp49mjg1jdq50j822, frame 52 WARNING: No entry in df for 131aedfhs6pnf1fvtvp493b3tui4y3s122, frame 31 WARNING: No entry in df for 12nc2fo32bddqwoyhtlmwecxrf3rzr1ft217, frame 51 WARNING: No entry in df for 13c2ur549vohc0jat2dvu3xs9w1, frame 28 WARNING: No entry in df for 131aedfhs6pnf1fvtvp49mia86yesh2i22, frame 32 WARNING: No entry in df for 131aedfhs6pnf1fvtvp493b3tudjsae022, frame 68 WARNING: No entry in df for 131aedfhs6pnf1fvtvp49mff2plx3rdw22, frame 21 WARNING: No entry in df for 12nc2fo32bddqwoyhtlmwecxrf1r8z1fj02, frame 43 WARNING: No entry in df for 13c2ur549vohc0jat2dvu3xrxb1, frame 29 WARNING: No entry in df for 13c2ur549vohc0jat2dvu3xs2y1, frame 29 WARNING: No entry in df for 13c2ur549vohc0jat2ewj4eygo1, frame 34 WARNING: No entry in df for 13c2ur549vohc0jat2dvt3xrmw2, frame 19 WARNING: No entry in df for 131aedfhs6pnf1fvtvp493iu1n6d1qnz22, frame 37 WARNING: No entry in df for 12nc2fo32bddqwoyhtlmwecxrf3rzr1ft215, frame 61 WARNING: No entry in df for 12nc2fo32bddqwoyhtlmwecxrf3rzr1ft219, frame 51 WARNING: No entry in df for 131aedfhs6pnf1fvtvp49jyrt5v1jbyh22, frame 16 WARNING: No entry in df for 131aedfhs6pnf1fvtvp49mldx978xclh22, frame 53 WARNING: No entry in df for 131aedfhs6pnf1fvtvp49mfffzgvygi422, frame 39 WARNING: No entry in df for 12nc2fo32bddqwoyhtlmwecxrf3rzr1ft214, frame 32 WARNING: No entry in df for 131aedfhs6pnf1fvtvp493iu1neqswr222, frame 21 WARNING: No entry in df for 12nc2fo32bddqwoyhtlmwecxrf1r8z1fj04, frame 25 WARNING: No entry in df for 12nc2fo32bddqwoyhtlmwecxrf1r8z1fj01, frame 55 WARNING: No entry in df for 131aedfhs6pnf1fvtvp493iu1nekk6h022, frame 19 WARNING: No entry in df for 13c2ur549vohc0jat2dfn3qff62, frame 25 WARNING: No entry in df for 13c2ur549vohc0jat2e6y42x3z1, frame 33 WARNING: No entry in df for 131aedfhs6pnf1fvtvp49mk5xd63iqs422, frame 41 WARNING: No entry in df for 131aedfhs6pnf1fvtvp49mg85r5ebddd22, frame 30 WARNING: No entry in df for 131aedfhs6pnf1fvtvp493iu1n706yt522, frame 44 WARNING: No entry in df for 12nc2fo32bddqwoyhtlmwecxrf3rzr1ft313, frame 34 WARNING: No entry in df for 13c2ur549vohc0jat2dvu3xrxb1, frame 26 WARNING: No entry in df for 13c2ur549vohc0jat2wd33mt71, frame 21 WARNING: No entry in df for 131aedfhs6pnf1fvtvp498wvamk5zfoj22, frame 35 WARNING: No entry in df for 12nc2fo32bddqwoyhtlmwecxrf1r8z1fj0, frame 52 WARNING: No entry in df for 13c2ur549vohc0jat2dvu3xs4p1, frame 24 WARNING: No entry in df for 12nc2fo32bddqwoyhtlmwecxrf3rzr1ft220, frame 27 WARNING: No entry in df for 13c2ur549vohc0jat2dvt3xrmw2, frame 23 WARNING: No entry in df for 131aedfhs6pnf1fvtvp493b3tufm4gzi22, frame 35 WARNING: No entry in df for 13c2ur549vohc0jat2dvt3xrqt1, frame 35 WARNING: No entry in df for 13c2ur549vohc0jat2dvt3xrmw2, frame 33 WARNING: No entry in df for 12nc2fo32bddqwoyhtlmwecxrf3rzr1ft37, frame 40 WARNING: No entry in df for 12nc2fo32bddqwoyhtlmwecxrf3rzr1ft38, frame 60 WARNING: No entry in df for 131aedfhs6pnf1fvtvp493iu1na8zz7s22, frame 26 WARNING: No entry in df for 12nc2fo32bddqwoyhtlmwecxrf3rzr1ft312, frame 33 WARNING: No entry in df for 12nc2fo32bddqwoyhtlmwecxrf1r8z1fj06, frame 56 WARNING: No entry in df for 13c2ur549vohc0jat2e6x42x0y1, frame 22 WARNING: No entry in df for 13c2ur549vohc0jat2dfn3qff62, frame 26 WARNING: No entry in df for 131aedfhs6pnf1fvtvp49mk5l3gmfzrq22, frame 22 WARNING: No entry in df for 13c2ur549vohc0jat2wd23mh11, frame 21 WARNING: No entry in df for 12nc2fo32bddqwoyhtlmwecxrf1r8z1fj05, frame 43 WARNING: No entry in df for 13c2ur549vohc0jat2wd23mle1, frame 21 WARNING: No entry in df for 13c2ur549vohc0jat2dvt3xrqt1, frame 33 WARNING: No entry in df for 12nc2fo32bddqwoyhtlmwecxrf3rzr1ft39, frame 60 WARNING: No entry in df for 131aedfhs6pnf1fvtvp493b3tuvd4nqc22, frame 35 WARNING: No entry in df for 13c2ur549vohc0jat2ewk4eyyh1, frame 29 WARNING: No entry in df for 13c2ur549vohc0jat2dvu3xs0c1, frame 23 WARNING: No entry in df for 12aw4ack71831bocuf5j3pz235kn1v361de, frame 33 WARNING: No entry in df for 12nc2fo32bddqwoyhtlmwecxrf1r8z1fj01, frame 39 WARNING: No entry in df for 13c2ur549vohc0jat2dvu3xs2y1, frame 30
Out[81]:
931
In [82]:
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
DEFAULT_IMG_SIZE = (512, 512)
n_show = 10
for i, (img_id, frame) in enumerate(imgs_frames[:n_show]):
img_path = os.path.join(PRUNED_IMGS_DIR, f"{img_id}_{frame}.png")
img = Image.open(img_path).convert("L") # grayscale
img = img.resize(DEFAULT_IMG_SIZE, Image.NEAREST)
img_arr = np.array(img)
mask = lesion_masks[i]
plt.figure(figsize=(6,6))
plt.imshow(img_arr, cmap='gray')
plt.imshow(mask, cmap='Reds', alpha=0.4)
plt.title(f"Image: {img_id}, Frame: {frame}")
plt.axis("off")
plt.show()
In [83]:
all_imgs = [PRUNED_IMGS_DIR + "/" + img for img in all_imgs]
imgs_size = (256, 256)
img_array = get_img_array(all_imgs, size=imgs_size)
imgs_filtered = filter_uneven_shapes(img_array, img_size_standard=imgs_size)
In [84]:
X = imgs_filtered
y = Y_train
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, stratify=y, random_state=42)
# Convert to types accepted by pyTsetlinMachine (0/1 uint8)
X_train = X_train.astype(np.uint8)
X_test = X_test.astype(np.uint8)
Lesion presence/absence prediction - MultiClassTsetlinMachine¶
In [ ]:
from pyTsetlinMachine.tm import MultiClassTsetlinMachine
tm = MultiClassTsetlinMachine(
number_of_clauses=200,
T=50,
s=5.0,
weighted_clauses=True
)
epochs = 200
t0 = time()
tm.fit(X_train, y_train, epochs=epochs)
t1 = time()
print(f"Training done in {t1-t0:.1f}s")
y_pred = tm.predict(X_test)
acc = np.mean(y_pred == y_test)
print(f"Test accuracy: {acc*100:.2f}%")
In [ ]:
MultiClassConvolutionalTsetlinMachine2D¶
Patches¶
In [ ]:
import numpy as np
from sklearn.feature_extraction.image import extract_patches_2d, reconstruct_from_patches_2d
patch_size = (8, 8)
max_patches_per_image = 100
X_patches_list = []
y_labels_list = []
images = imgs_filtered
masks = lesion_masks
for img, mask in zip(images, masks):
# Extract random patches from this image (if more patches than max_pathes)
X_patches = extract_patches_2d(img, patch_size) #, max_patches=max_patches_per_image)
Y_patches = extract_patches_2d(mask, patch_size) #, max_patches=max_patches_per_image)
# Label each patch: 1 if majority pixels are lesion
y_labels = (Y_patches.mean(axis=(1,2)) > 0.5).astype(int)
X_patches_list.append(X_patches)
y_labels_list.append(y_labels)
In [209]:
# Combine all patches from all images
X_all = np.concatenate(X_patches_list, axis=0)
y_all = np.concatenate(y_labels_list, axis=0)
In [ ]:
import numpy as np
from sklearn.feature_extraction.image import extract_patches_2d, reconstruct_from_patches_2d
X_train_imgs, X_test_imgs, y_train_masks, y_test_masks = train_test_split(
imgs_filtered, lesion_masks, test_size=0.2, random_state=42
)
patch_size = (8, 8)
max_patches_per_image = 50 # to control memory
X_train_patches_list = []
y_train_patches_list = []
# images = imgs_filtered
# masks = lesion_masks
for img, mask in zip(X_train_imgs, y_train_masks):
# Extract random patches from this image (if more patches than max_pathes)
X_patches = extract_patches_2d(img, patch_size, max_patches=max_patches_per_image)
Y_patches = extract_patches_2d(mask, patch_size, max_patches=max_patches_per_image)
# Label each patch: 1 if majority pixels are lesion
y_labels = (Y_patches.mean(axis=(1,2)) > 0.5).astype(int)
X_train_patches_list.append(X_patches)
y_train_patches_list.append(y_labels)
# Combine all patches from all images
X_train_all = np.concatenate(X_train_patches_list, axis=0)
y_train_all = np.concatenate(y_train_patches_list, axis=0)
ctm = MultiClassConvolutionalTsetlinMachine2D(
number_of_clauses=2000,
T=200,
s=3.9,
patch_dim=patch_size,
weighted_clauses=True
)
start_time = time()
ctm.fit(X_train_all, y_train_all, epochs=2000)
end_time = time()
print(f"Training completed in {end_time - start_time:.1f} seconds")
Training completed in 4876.6 seconds
In [ ]:
X_test_array = np.stack(X_test_imgs, axis=0) # shape = (n_test, H, W)
y_test_array = np.stack(y_test_masks, axis=0) # shape = (n_test, H, W)
patch_size = (8, 8)
pred_masks = []
pred_times = []
r = X_test_array.shape[0]
for i in range(r):
test_img = X_test_array[i]
# Extract patches
test_patches = extract_patches_2d(test_img, patch_size)
# Predict patches
start_pred = time()
y_pred = ctm.predict(test_patches)
end_pred = time()
print(f"Prediction time for image {i}: {end_pred - start_pred} seconds")
pred_times.append(end_pred - start_pred)
# Convert predicted labels to patches
pred_patches = np.array([np.full(patch_size, label) for label in y_pred])
# Reconstruct full image mask
pred_mask = reconstruct_from_patches_2d(pred_patches, test_img.shape)
pred_masks.append(pred_mask)
# Commented that in here, but done this step later
# pred_masks.append((pred_mask > 0.5).astype(np.uint8))
pred_masks = np.stack(pred_masks, axis=0)
Prediction time for image 0: 1.5906875133514404 seconds Prediction time for image 1: 1.5800106525421143 seconds Prediction time for image 2: 1.5306434631347656 seconds Prediction time for image 3: 1.5246961116790771 seconds Prediction time for image 4: 1.5180697441101074 seconds Prediction time for image 5: 1.5476906299591064 seconds Prediction time for image 6: 1.503272533416748 seconds Prediction time for image 7: 1.492661952972412 seconds Prediction time for image 8: 1.4701151847839355 seconds Prediction time for image 9: 1.5576581954956055 seconds Prediction time for image 10: 1.540576457977295 seconds Prediction time for image 11: 1.5773301124572754 seconds Prediction time for image 12: 1.5279059410095215 seconds Prediction time for image 13: -0.9455771446228027 seconds Prediction time for image 14: 1.5423076152801514 seconds Prediction time for image 15: 1.5316753387451172 seconds Prediction time for image 16: 1.4729506969451904 seconds Prediction time for image 17: 1.5092487335205078 seconds Prediction time for image 18: 1.6336443424224854 seconds Prediction time for image 19: 1.5756545066833496 seconds Prediction time for image 20: 1.5630347728729248 seconds Prediction time for image 21: 1.5477139949798584 seconds Prediction time for image 22: 1.5388097763061523 seconds Prediction time for image 23: 1.539632797241211 seconds Prediction time for image 24: 1.6155743598937988 seconds Prediction time for image 25: 1.5494251251220703 seconds Prediction time for image 26: 1.5106444358825684 seconds Prediction time for image 27: 1.4759142398834229 seconds Prediction time for image 28: 1.509150505065918 seconds Prediction time for image 29: 1.4426944255828857 seconds Prediction time for image 30: 1.5389995574951172 seconds Prediction time for image 31: 1.5516891479492188 seconds Prediction time for image 32: 1.5599570274353027 seconds Prediction time for image 33: 1.531343936920166 seconds Prediction time for image 34: 1.5240211486816406 seconds Prediction time for image 35: 1.5142500400543213 seconds Prediction time for image 36: 1.4948782920837402 seconds Prediction time for image 37: 1.6078424453735352 seconds Prediction time for image 38: 1.6691744327545166 seconds Prediction time for image 39: 1.6583993434906006 seconds Prediction time for image 40: 1.6214253902435303 seconds Prediction time for image 41: 1.5432913303375244 seconds Prediction time for image 42: 1.5113215446472168 seconds Prediction time for image 43: 1.5149550437927246 seconds Prediction time for image 44: 1.5026860237121582 seconds Prediction time for image 45: 1.5307514667510986 seconds Prediction time for image 46: 1.5476727485656738 seconds Prediction time for image 47: 1.585536241531372 seconds Prediction time for image 48: 1.5462253093719482 seconds Prediction time for image 49: 1.5787668228149414 seconds Prediction time for image 50: -0.865727424621582 seconds Prediction time for image 51: 1.524533987045288 seconds Prediction time for image 52: 1.5211572647094727 seconds Prediction time for image 53: 1.5937213897705078 seconds Prediction time for image 54: 1.5412392616271973 seconds Prediction time for image 55: 1.5078485012054443 seconds Prediction time for image 56: 1.535973310470581 seconds Prediction time for image 57: 1.5849976539611816 seconds Prediction time for image 58: 1.5249762535095215 seconds Prediction time for image 59: 1.4662599563598633 seconds Prediction time for image 60: 1.6443397998809814 seconds Prediction time for image 61: 1.56363844871521 seconds Prediction time for image 62: 1.446685552597046 seconds Prediction time for image 63: 1.5666241645812988 seconds Prediction time for image 64: 1.3319799900054932 seconds Prediction time for image 65: 1.6049578189849854 seconds Prediction time for image 66: 1.5580089092254639 seconds Prediction time for image 67: 1.521324872970581 seconds Prediction time for image 68: 1.4986646175384521 seconds Prediction time for image 69: -0.9557466506958008 seconds Prediction time for image 70: 1.5669217109680176 seconds Prediction time for image 71: 1.5702033042907715 seconds Prediction time for image 72: 1.5207650661468506 seconds Prediction time for image 73: 1.5491504669189453 seconds Prediction time for image 74: 1.487323522567749 seconds Prediction time for image 75: 1.5779314041137695 seconds Prediction time for image 76: 1.5397212505340576 seconds Prediction time for image 77: 1.5112416744232178 seconds Prediction time for image 78: 1.4914627075195312 seconds Prediction time for image 79: 1.5303525924682617 seconds Prediction time for image 80: 1.5875537395477295 seconds Prediction time for image 81: 1.470224380493164 seconds Prediction time for image 82: 1.5185887813568115 seconds Prediction time for image 83: 1.5089497566223145 seconds Prediction time for image 84: 1.5581550598144531 seconds Prediction time for image 85: 1.5288374423980713 seconds Prediction time for image 86: 1.4999449253082275 seconds Prediction time for image 87: 1.5152323246002197 seconds Prediction time for image 88: -0.9704937934875488 seconds Prediction time for image 89: 1.5453803539276123 seconds Prediction time for image 90: 1.4935038089752197 seconds Prediction time for image 91: 1.4706757068634033 seconds Prediction time for image 92: 1.5532445907592773 seconds Prediction time for image 93: 1.56365966796875 seconds Prediction time for image 94: 1.5325562953948975 seconds Prediction time for image 95: 1.5638701915740967 seconds Prediction time for image 96: 1.4797890186309814 seconds Prediction time for image 97: 1.497138500213623 seconds Prediction time for image 98: 1.4422483444213867 seconds Prediction time for image 99: 1.5899405479431152 seconds Prediction time for image 100: 1.47938871383667 seconds Prediction time for image 101: 1.5555126667022705 seconds Prediction time for image 102: 1.5276122093200684 seconds Prediction time for image 103: 1.5753536224365234 seconds Prediction time for image 104: 1.5397696495056152 seconds Prediction time for image 105: 1.4861092567443848 seconds Prediction time for image 106: 1.5487480163574219 seconds Prediction time for image 107: -1.0036132335662842 seconds Prediction time for image 108: 1.555609941482544 seconds Prediction time for image 109: 1.603928565979004 seconds Prediction time for image 110: 1.5490033626556396 seconds Prediction time for image 111: 1.5036776065826416 seconds Prediction time for image 112: 1.4680452346801758 seconds Prediction time for image 113: 1.2962696552276611 seconds Prediction time for image 114: 1.4723970890045166 seconds Prediction time for image 115: 1.5952134132385254 seconds Prediction time for image 116: 1.46396803855896 seconds Prediction time for image 117: 1.5386075973510742 seconds Prediction time for image 118: 1.4980340003967285 seconds Prediction time for image 119: 1.4818403720855713 seconds Prediction time for image 120: 1.5771212577819824 seconds Prediction time for image 121: 1.6765296459197998 seconds Prediction time for image 122: 1.5565142631530762 seconds Prediction time for image 123: 1.5115408897399902 seconds Prediction time for image 124: 1.457038164138794 seconds Prediction time for image 125: 1.4947843551635742 seconds Prediction time for image 126: 1.5569849014282227 seconds Prediction time for image 127: 1.514082908630371 seconds Prediction time for image 128: 1.5218138694763184 seconds Prediction time for image 129: 1.528759241104126 seconds Prediction time for image 130: 1.5364439487457275 seconds Prediction time for image 131: 1.4933407306671143 seconds Prediction time for image 132: 1.6352009773254395 seconds Prediction time for image 133: 1.5933828353881836 seconds Prediction time for image 134: 1.525589942932129 seconds Prediction time for image 135: 1.4746346473693848 seconds Prediction time for image 136: 1.5389983654022217 seconds Prediction time for image 137: 1.5730974674224854 seconds Prediction time for image 138: 1.5312755107879639 seconds Prediction time for image 139: 1.549145221710205 seconds Prediction time for image 140: 1.5019147396087646 seconds Prediction time for image 141: 1.5549330711364746 seconds Prediction time for image 142: 1.3299367427825928 seconds Prediction time for image 143: 1.523484230041504 seconds Prediction time for image 144: 1.5538530349731445 seconds Prediction time for image 145: -0.8729045391082764 seconds Prediction time for image 146: 1.4476087093353271 seconds Prediction time for image 147: 1.5464286804199219 seconds Prediction time for image 148: 1.5394880771636963 seconds Prediction time for image 149: 1.422776222229004 seconds Prediction time for image 150: 1.6020712852478027 seconds Prediction time for image 151: 1.549144983291626 seconds Prediction time for image 152: 1.549586534500122 seconds Prediction time for image 153: 1.5080983638763428 seconds Prediction time for image 154: 1.5384047031402588 seconds Prediction time for image 155: 1.4526026248931885 seconds Prediction time for image 156: 1.566439151763916 seconds Prediction time for image 157: 1.3208038806915283 seconds Prediction time for image 158: 1.5274229049682617 seconds Prediction time for image 159: 1.5744764804840088 seconds Prediction time for image 160: 1.5364201068878174 seconds Prediction time for image 161: 1.502624750137329 seconds Prediction time for image 162: 1.514739751815796 seconds Prediction time for image 163: 1.5959692001342773 seconds Prediction time for image 164: 1.5456345081329346 seconds Prediction time for image 165: -0.9402482509613037 seconds Prediction time for image 166: 1.511765718460083 seconds Prediction time for image 167: 1.5279767513275146 seconds Prediction time for image 168: 1.4367988109588623 seconds Prediction time for image 169: 1.485811710357666 seconds Prediction time for image 170: 1.5227282047271729 seconds Prediction time for image 171: 1.5802414417266846 seconds Prediction time for image 172: 1.5604794025421143 seconds Prediction time for image 173: 1.5706441402435303 seconds Prediction time for image 174: 1.498140573501587 seconds Prediction time for image 175: 1.439302921295166 seconds Prediction time for image 176: 1.5258584022521973 seconds Prediction time for image 177: 1.534400463104248 seconds Prediction time for image 178: 1.5471289157867432 seconds Prediction time for image 179: 1.4931879043579102 seconds Prediction time for image 180: 1.5518608093261719 seconds Prediction time for image 181: 1.6493964195251465 seconds Prediction time for image 182: 1.5492780208587646 seconds Prediction time for image 183: 1.5514626502990723 seconds Prediction time for image 184: -0.9575612545013428 seconds Prediction time for image 185: 1.5478856563568115 seconds Prediction time for image 186: 1.5165929794311523 seconds
In [ ]:
pred_masks_binary = (pred_masks > 0.5).astype(np.uint8)
pred_masks_binary
Out[Â ]:
array([[[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
...,
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0]],
[[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
...,
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0]],
[[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
...,
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0]],
...,
[[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
...,
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0]],
[[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
...,
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0]],
[[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
...,
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0]]], shape=(187, 256, 256), dtype=uint8)
In [291]:
X_test_imgs
Out[291]:
array([[[1, 1, 1, ..., 1, 1, 1],
[1, 1, 1, ..., 1, 1, 1],
[1, 1, 1, ..., 1, 1, 1],
...,
[0, 0, 0, ..., 1, 1, 1],
[0, 0, 0, ..., 1, 1, 1],
[0, 0, 0, ..., 1, 1, 1]],
[[1, 0, 0, ..., 1, 1, 1],
[0, 0, 0, ..., 1, 1, 1],
[0, 0, 0, ..., 1, 1, 1],
...,
[1, 1, 1, ..., 1, 1, 1],
[1, 0, 1, ..., 1, 1, 1],
[1, 1, 1, ..., 1, 1, 1]],
[[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
...,
[0, 0, 0, ..., 1, 1, 1],
[0, 0, 0, ..., 1, 1, 1],
[0, 0, 0, ..., 1, 1, 1]],
...,
[[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
...,
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0]],
[[0, 0, 0, ..., 1, 1, 1],
[0, 0, 0, ..., 1, 1, 1],
[0, 0, 0, ..., 1, 1, 1],
...,
[0, 0, 0, ..., 1, 0, 0],
[0, 0, 0, ..., 1, 1, 0],
[0, 0, 0, ..., 0, 1, 0]],
[[1, 1, 1, ..., 0, 0, 0],
[1, 1, 1, ..., 0, 0, 0],
[1, 1, 1, ..., 0, 0, 0],
...,
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0]]], shape=(187, 256, 256), dtype=uint8)
In [306]:
import matplotlib.pyplot as plt
# Suppose X_test_imgs = your test images
# y_test_masks = ground truth masks
# pred_masks = predicted masks (from CTM)
n_show = 187 # number of test images to visualize
for i in range(n_show):
img = X_test_imgs[i]
true_mask = y_test_masks[i]
pred_mask = pred_masks[i]
plt.figure(figsize=(12, 4))
# Original image
plt.subplot(1, 3, 1)
plt.title("Input Image")
plt.imshow(img, cmap='gray')
plt.axis('off')
plt.imshow(true_mask, cmap='Reds', alpha=0.5)
plt.axis('off')
# Ground truth mask
plt.subplot(1, 3, 2)
plt.title("Ground Truth Mask")
plt.imshow(true_mask, cmap='gray')
plt.axis('off')
# Predicted mask
plt.subplot(1, 3, 3)
plt.title("Predicted Mask")
plt.imshow(pred_mask, cmap='gray')
plt.axis('off')
plt.show()
In [233]:
for i, test_image in enumerate(X_test_imgs[90:100]):
test_mask = y_test_masks[i]
test_patches = extract_patches_2d(test_image, patch_size)
y_pred = tm.predict(test_patches)
pred_patches = np.array([np.full(patch_size, label) for label in y_pred])
pred_mask = reconstruct_from_patches_2d(pred_patches, test_image.shape)
binary_pred_mask = (pred_mask > 0.5).astype(np.uint8)
# Visualize
plt.figure(figsize=(10,3))
plt.subplot(1,3,1)
plt.title("Input Image")
plt.imshow(test_image, cmap='gray')
plt.subplot(1,3,2)
plt.title("Ground Truth Mask")
plt.imshow(test_mask, cmap='gray')
plt.subplot(1,3,3)
plt.title("Predicted Mask")
plt.imshow(binary_pred_mask, cmap='gray')
plt.show()